package com.shujia.wyh.day04.homework;

/*
    合并数组操作：现有如下一个数组： int[] oldArr={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}
    要求将以上数组中值为0的项去掉，将不为0的值存入一个新的数组，生成的新数组为： int newArr [] ={1,3,4,5,6,6,5,4,7,6,7,5}

    分析：
        1、新数组和旧数组的长度不一样，新数组的长度是旧数组不为0元素的个数
        2、根据求出来的不为0的元素个数来创建新数组
        3、遍历旧数组，当不为0的时候向新数组插入元素
        4、创建两个索引变量，一个控制新数组的，一个控制旧数组
 */
public class Test3 {
    public static void main(String[] args) {
        int[] oldArr = {1, 3, 4, 5, 0, 0, 6, 6, 0, 5, 4, 7, 6, 7, 0, 5};
        System.out.println("旧数组内容是：");
        printArray(oldArr);

        //求出旧数组中不为0的个数
        int count = 0;
        for (int i = 0; i < oldArr.length; i++) {
            if (oldArr[i] != 0) {
                count++;
            }
        }

        //根据上面求出来的不为0个数来动态初始化创建新数组
        int[] newArr = new int[count];

        //创建两个int类型的索引变量，分别控制旧数组和新数组
        int oldIndex = 0;
        int newIndex = 0;

        //遍历旧数组将不为0的元素添加到新数组中
        for (; oldIndex < oldArr.length; oldIndex++) {
            if (oldArr[oldIndex] != 0) {
                newArr[newIndex] = oldArr[oldIndex];
                newIndex++;
            }
        }

        System.out.println("新数组内容是：");
        printArray(newArr);



    }

    public static void printArray(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
//            System.out.println(arr[i]);
            if (i == 0) {
                System.out.print("[" + arr[i] + ",");
            } else if (i == arr.length - 1) {
                System.out.println(arr[i] + "]");
            } else {
                System.out.print(arr[i] + ",");
            }
        }
    }
}
